/*
 * ManejadorConfiguracion.h
 *
 *  Created on: 10/09/2010
 *      Author: julfc, luciano.lattes
 */

#ifndef MANEJADORCONFIGURACION_H_
#define MANEJADORCONFIGURACION_H_

#include <iostream>
#include <vector>
#include <sstream>
#include <cstdlib>
#include "Configuracion.h"
#include "../clases/EncipSingleton.h"
class ManejadorConfiguracion {
private:

  static const std::string EXTENSION_ARCHIVO;
  static const std::string PROPIEDAD_VALOR;

  static const std::string TAMANIO_PARAM;
  static const std::string TAM_MATRIZ;
  static const std::string CANTIDAD_MAILS;
  static const std::string LIBSPOPC;

  Configuracion configuracion;

public:

  static const long BYTES_IN_KB;

  // Tipos de filtro.
  static const std::string TIPO_SELECCION;
  static const std::string TIPO_CLASIFICACION;
  static const std::string TIPO_LISTA;

  // Condicion para el filtro.
  static const std::string ORIGEN;
  static const std::string DESTINO;
  static const std::string ASUNTO;
  static const std::string FECHA;
  static const std::string RESPUESTA_A;

  ManejadorConfiguracion();

  bool crearFiltro(const std::string& tipo, const std::string& condicion,
      const std::string& username);

  bool crearFiltro(const std::string& tipo, const std::string& condicion,
      const std::string& valorSeleccion, const std::string& username);

  long obtenerTamanioBloque();

  bool eliminarFiltro(const std::string& tipo,
  		const std::string& condicion, const std::string& valorSeleccion,
  		const std::string& username);

  void limpiarConfiguracion();

  std::vector<std::string> obtenerParamsLibspopc();

  std::vector<std::string> obtenerIndices();

  std::string obtenerValor(const std::string& clave);

  void guardarCantidadMails(long cantidad);

  long obtenerCantidadMails();

  void modificarCantidadMails(long nuevaCantidad);

  void guardarTamanioMatriz(long tamMatriz);

  long obtenerTamanioMatriz();

};

#endif /* MANEJADORCONFIGURACION_H_ */
